package com.java.ThreadDemo3;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class ThreadDemo {
    //多线程实现的第三种方式
    // 特点：可以获取到多线程运行的结果
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        /*
            1.创建一个MyCallable类, 实现Callable接口
            2.重写call方法,是有返回值的, 表示多线程运行的结果
            3.创建MyCallable对象,表示多线程要执行的任务
            4.创建FutureTask对象, 用于管理多线程运行的结果
            5.创建Thread对象, 并启动线程
         */
        //创建MyCallable对象,表示多线程要执行的任务
        MyCallable myCallable = new MyCallable();
        //创建FutureTask对象, 用于管理多线程运行的结果
        FutureTask<Integer> ft = new FutureTask<>(myCallable);
        //创建线程对象
        Thread t = new Thread(ft);

        //开启线程
        t.start();
        //获取线程执行的结果
        Integer ret = ft.get();
        System.out.println(ret);

    }
}
